package Gather.StreamExercise.StreamDome001;

/**
 * ClassName:StreamDome002
 * Package:Gather.StreamExercise
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/23-21:54
 * @Version:v1.0
 */
public class StreamDome002 {
    /*Stream流
    *
    * 作用：结合了Lambda表达式,简化集合,数组的操作
    *
    * Stream流的使用步骤
    * 1.先得到一条Stream流(流水线),并把数据放上去
    *       单列集合  default Stream<E> stream()  Collection中的默认方法
    *       双列集合  无   无法直接使用stream流--keySet/entrySet
    *       数组    public static<T>Stream<T>stream(T[] array)  Arrays工具类中的静态方法
    *       一堆零散数据    public static<T>Stream<T>of(T...values) stream接口中的静态方法
    * 2.使用中间方法对流水线上的数据进行操作
    *       Stream<T>filter(Predicate<?super T>predicate  过滤)
    *       Stream<T>limit(long maxSize)  获取前几个元素
    *       Stream<T>skip(long n) 跳过前几个元素
    *       Stream<T>distinct()   元素去重,依赖(hashCode和equals方法)
    *       static<T>Stream<T> concat(Stream a,Stream b)  合并a和b两个流为一个流
    *       Stream<R>map(Function<T,R>mapper) 转换流中的数据类型
    *       注意1：中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
    *       注意2：修改Stream流中的数据,不会影响原来集合或者数组中的数据
    * 3.使用终结方法对流水线上的数据进行操作
    *       void forEach(Consumer action) 遍历
    *       long count()  统计
    *       toArray() 收集流中的数据放到数组
    *       collect(Collector collector)  收集流中的数据,放到集合中
    *
    *
    *
    */
}
